import Vue from 'vue'
import Vuex from 'vuex'
import persistedstate from 'vuex-persistedstate'
import router from '@/router' // router===this.$router
import { userProfile } from '@/api/user'
// import { setTimeout } from 'core-js'
// import { setToken, getToken } from '@/utils/auth'
// 持久化：1：修改时存储到浏览器(cookie,localstorage)  2:初始化的值要获取浏览器存储  getxxx() || 默认值
// 借助插件vuex持久化存储的插件
/*
   vuex-persistedstate :作用：用于vuex数据持久化
   使用：
     1：下载  npm i vuex-persistedstate
     2:在store/index.js中导入使用
        import  persistedstate  from 'vuex-persistedstate'
     3：配制
        plugins:[
          persistedstate({
            paths:['哪些数据做持久化']
        })]
*/

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // tokenObj: JSON.parse(getToken()) || ''
    tokenObj: '',
    userInfo: ''
  },
  getters: {},
  mutations: {
    // 用于修改state数据，且只是用于数据的同步处理
    setTokenObj (state, value) {
      state.tokenObj = value
      // token存储到浏览器
      // setToken(JSON.stringify(value))
    },
    logout (state) {
      state.userInfo = '' // 删除用户信息
      state.tokenObj = '' // 删除token 和 refrenh_token
      // 当前处于页面 vue中：this。$route.path
      router.push('/login?back=' + location.href.split('#')[1]) // 跳转至登录页
    },
    setUserInfo (state, value) {
      state.userInfo = value
    }
  },
  actions: {
    async getUserInfo (store) {
      const res = await userProfile()
      store.commit('setUserInfo', res.data.data)
    }
  },
  modules: {},
  plugins: [
    persistedstate({
      paths: ['tokenObj']
    })
  ]
})
